package com.settlement.system.model.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
public class SysAuditExportVO implements Serializable {

    // 原始账单ID
    @ExcelProperty(value = "原始账单ID")
    private String linkNo;

    // 核消状态
    @ExcelProperty(value = "核销状态")
    private String auditStatus;

    // 应收账款余额
    @ExcelProperty(value = "应收账款余额")
    private BigDecimal receiveBillAmount = BigDecimal.ZERO;

    // 财务调账金额
    @ExcelProperty(value = "财务调账金额")
    private BigDecimal reconciliationAmount = BigDecimal.ZERO;

    // 发退货时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "发退货时间")
    private LocalDateTime sendReturnTime;

    // 下单时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "下单时间")
    private LocalDateTime orderTime;

    // 对账系统平台编码
    @ExcelProperty(value = "对账系统平台编码")
    private String secordSourceCode;

    // 对账系统平台名称
    @ExcelProperty(value = "对账系统平台名称")
    private String secordSourceName;

    // 电商平台店铺编码
    @ExcelProperty(value = "电商平台店铺编码")
    private String thirdSourceCode;

    // 电商平台店铺名称
    @ExcelProperty(value = "电商平台店铺名称")
    private String thirdSourceName;

    // 对账平台店铺编码
    @ExcelProperty(value = "对账平台店铺编码")
    private String dzPlatformStoreCode;

    // 自有平台主订单号
    @ExcelProperty(value = "自有平台主订单号")
    private String onwerPreformNo;

    // 原始主订单号
    @ExcelProperty(value = "原始主订单号")
    private String sourcePreformMainNo;

    // 原始子订单号
    @ExcelProperty(value = "原始子订单号")
    private String sourcePreformSubNo;

    // PO单号
    @ExcelProperty(value = "PO单号")
    private String poNo;

    // 渠道编码
    @ExcelProperty(value = "渠道编码")
    private String channelCode;

    // 渠道
    @ExcelProperty(value = "渠道")
    private String channel;

    // 内部系统电商平台编码
    @ExcelProperty(value = "内部系统电商平台编码")
    private String innerShopCode;

    // 内部系统电商平台名称
    @ExcelProperty(value = "内部系统电商平台名称")
    private String innerShopName;

    // 内部系统店铺编码
    @ExcelProperty(value = "内部系统店铺编码")
    private String shopCode;

    // 内部系统店铺名称
    @ExcelProperty(value = "内部系统店铺名称")
    private String shopName;

    // 入账主体
    @ExcelProperty(value = "入账主体")
    private String receiveCompany;

    // 电商平台登录账号
    @ExcelProperty(value = "电商平台登录账号")
    private String shopAccount;

    // 财务系统店铺编码
    @ExcelProperty(value = "财务系统店铺编码")
    private String billSysStore;

    // 财务系统店铺名称
    @ExcelProperty(value = "财务系统店铺名称")
    private String billSysStoreName;

    // 商品单价
    @ExcelProperty(value = "商品单价")
    private BigDecimal price = BigDecimal.ZERO;

    // 发货数量
    @ExcelProperty(value = "发货数量")
    private Integer qty = 0;

    // 发货金额
    @ExcelProperty(value = "发货金额")
    private BigDecimal sendAmount = BigDecimal.ZERO;

    // 退货数量
    @ExcelProperty(value = "退货数量")
    private Integer returnQty = 0;

    // 退货金额
    @ExcelProperty(value = "退货金额")
    private BigDecimal returnAmount = BigDecimal.ZERO;

    // 收款日期
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "收款日期")
    private LocalDateTime receiveDate;

    // 收款金额
    @ExcelProperty(value = "收款金额")
    private BigDecimal receiveAmount = BigDecimal.ZERO;

    // 退款日期
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "退款日期")
    private LocalDateTime refundDate;

    // 退款金额
    @ExcelProperty(value = "退款金额")
    private BigDecimal refundAmount = BigDecimal.ZERO;

    // 保证金退款金额
    @ExcelProperty(value = "保证金退款金额")
    private BigDecimal depositAmount = BigDecimal.ZERO;

    // 自系统调账日期
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "自系统调账日期")
    private LocalDateTime systemReconciliationDate;

    // 自系统调账数量
    @ExcelProperty(value = "自系统调账数量")
    private Integer systemReconciliationQty = 0;

    // 自系统调账金额
    @ExcelProperty(value = "自系统调账金额")
    private BigDecimal systemReconciliationAmount = BigDecimal.ZERO;

    // 财务调账日期
    @ExcelProperty(value = "财务调账日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime reconciliationDate;

    // 财务调账数量
    @ExcelProperty(value = "财务调账数量")
    private Integer reconciliationQty = 0;

    // 差异数量
    @ExcelProperty(value = "差异数量")
    private Integer differenceQty = 0;

    //业务日期
    @ExcelProperty(value = "业务日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime businessDate;

    // 单据编号
    @ExcelProperty(value = "单据编号")
    private String orderNo;

    // 核销结果分类
    @ExcelProperty(value = "核销结果分类")
    private String mainTypeName;

    // 订单核消细类名称
    @ExcelProperty(value = "订单核消细类名称")
    private String auditDetailName;

    // 异常售后未提报金额
    @ExcelProperty(value = "异常售后未提报金额")
    private BigDecimal serviceBillAmount = BigDecimal.ZERO;

    // 结算前退款
    @ExcelProperty(value = "结算前退款")
    private BigDecimal refundsBeforeCheckout;

    // 结算后退款
    @ExcelProperty(value = "结算后退款")
    private BigDecimal refundsAfterCheckout;

    // 规则编码
    @ExcelProperty(value = "规则编码")
    private String ruleCode;

    // 规则名称
    @ExcelProperty(value = "规则名称")
    private String ruleName;
}
